package cn.zyq.demo.system.pay.core.enums;


/**
 * @Description: 支付订单交易枚举值
 * @Author pengdoudou
 * @Date 2022/7/9 14:43
 */
public enum PayTradeStatusEnum {
    /**
     * 	微信交易状态，枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（付款码支付）
     * USERPAYING：用户支付中（付款码支付）
     * PAYERROR：支付失败(其他原因，如银行返回失败)
     *
     * 支付宝交易状态，枚举值：
     * WAIT_BUYER_PAY：交易创建，等待买家付款。
     * TRADE_CLOSED：未付款交易超时关闭，或支付完成后全额退款。
     * TRADE_SUCCESS：交易支付成功。
     * TRADE_FINISHED：交易结束，不可退款。
     */
    SUCCESS("SUCCESS","支付成功"),
    REFUND("REFUND", "转入退款"),
    NOTPAY("NOTPAY", "未支付"),
    CLOSED("CLOSED", "已关闭"),
    REVOKED("REVOKED", "已撤销（付款码支付）"),
    USERPAYING("USERPAYING", "用户支付中（付款码支付）"),
    PAYERROR("PAYERROR", "支付失败(其他原因，如银行返回失败)"),
    WAIT_BUYER_PAY("WAIT_BUYER_PAY", "交易创建，等待买家付款。"),
    TRADE_CLOSED("TRADE_CLOSED", "未付款交易超时关闭，或支付完成后全额退款。"),
    TRADE_SUCCESS("TRADE_SUCCESS", "交易支付成功。"),
    TRADE_FINISHED("TRADE_FINISHED", "交易结束，不可退款。。"),
    ;
    private String key;
    private String value;

    private PayTradeStatusEnum(String key, String value) {
        this.key = key;
        this.value = value;
    }


    public static String getKeyByValue(Integer value) {
        for (PayTradeStatusEnum item : PayTradeStatusEnum.values()) {
            if (item.value.equals(value)) return item.key;
        }
        return  null;
    }

    public static String getValueByKey(String key) {
        for (PayTradeStatusEnum item : PayTradeStatusEnum.values()) {
            if (item.key.equals(key)) return item.getValue().toString();
        }
        return  null;
    }


    public String getValue() {
        return value;
    }

    public String getKey() {
        return key;
    }
}
